<?php
/*
* Project: mod_gestaocorporativa
* author: Fabricio S Costa
* version: 1.0
* email: fabriciojf@gmail.com
*/
require_once('com/fabriciojf/persistence/PDOConnectionFactory.class.php');
require_once('com/fabriciojf/model/Config.class.php');


class ConfigDAO extends PDOConnectionFactory {

    // irá receber uma conexão
    public $conex = null;

    // constructor
    public function ConfigDAO(){}


    // realiza uma inserção
    public function save($config){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executa a query
            $stmt = $conex->prepare("INSERT INTO config
            (parametro,valor) VALUES (?,?)");

            // valores encapsulados nas variáveis da classe Agenda.
            // sequencia de índices que representa cada valor de minha query
            $stmt->bindValue(1, $config->getParametro());
            $stmt->bindValue(2, $config->getValor());

            // executo a query preparada
            $stmt->execute();

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    // realiza uma inserção
    public function update($config){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executa a query
            $stmt = $conex->prepare("UPDATE config SET parametro=?,valor=? WHERE id=?");
            // valores encapsulados nas variáveis da classe Agenda.
            // sequencia de índices que representa cada valor de minha query
            $stmt->bindValue(1, $config->getParametro());
            $stmt->bindValue(2, $config->getValor());
            $stmt->bindValue(3, $config->getId());

            // executo a query preparada
            $stmt->execute();

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    // remove um registro
    public function remove( $id ){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executo a query
            $num = $conex->exec("DELETE FROM config WHERE id=$id");

            // caso seja execuado ele retorna o número de rows que foram afetadas.
            if( $num >= 1 ){ return $num; } else { return 0; }
            // caso ocorra um erro, retorna o erro;

        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

    }


    // realiza uma listagem
    public function listAll(){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            $list = array();

            // executo a query
            $stmt = $conex->query("SELECT * FROM config");

            // desconecta
            $conex = null;

            if ($stmt) {
                $rows = $stmt->fetchAll();
                $i = 0;
                foreach ($rows as $rs) {
                    $list[$i] = new Config();
                    $list[$i]->setId($rs['id']);
                    $list[$i]->setParametro($rs['parametro']);
                    $list[$i]->setValor($rs['valor']);
                    $i++;
                }
            }

            return $list;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }


    public function findForId($id){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            $config = new Config();

            // executo a query
            $stmt = $conex->query("SELECT * FROM config WHERE id=$id");

            // desconecta
            $conex = null;

            if ($stmt) {
                $rows = $stmt->fetchAll();
                foreach ($rows as $rs) {
                    $config->setId($rs['id']);
                    $config->setParametro($rs['parametro']);
                    $config->setValor($rs['valor']);
                }
            }

            return $config;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }

    public function getRegistro($parametro){
        return $this->findForParametro($parametro);
    }

    public function findForParametro($parametro){

        try{
            //instancia a conexao
            $this->conex = PDOConnectionFactory::getConnection();
            $config = new Config();

            // executo a query
            $stmt = $this->conex->query("SELECT * FROM config WHERE parametro='".$parametro."'");
            
            // desconecta
            $this->conex = null;

            if ($stmt) {
                $rows = $stmt->fetchAll();
                foreach ($rows as $rs) {
                    $config->setId($rs['id']);
                    $config->setParametro($rs['parametro']);
                    $config->setValor($rs['valor']);
                }
            }
            return $config;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }

}
?>

